added Feb 2001 SDK
[windows-sources.git] / sdk / Feburary 2001 Platform SDK / DXReadMe.Txt
blob4838bc640f58c571d63631df1c12ea0c65e1fe13
2 Microsoft® DirectX® 8.0 SDK 
4 Contents:
6 - WHAT'S NEW
7 - DIRECTX 8.0 SDK RELEASE NOTES AND KNOWN ISSUES 
8 - COMPILER SUPPORT
10 __________________________________________________________________
14 WHAT'S NEW:
17 DirectX Audio (DirectSound & DirectMusic)
18 =========================================
20 DirectX 8.0 audio covers both DirectSound and DirectMusic API's.  In 
21 DirectX 8.0, these API's are more closely aligned and tied together.
23 There are many new features.  They include:
25    Effects processing on DirectSound Buffers
26    DLS2 synthesis
27         Arbitrary loop points
28         Release waveforms
29         Optional Filter per voice
30         6-stage envelope
31         Ramped volume scaling
32         Time-stamped playback
33    "Audiopaths":  a powerful and easy way to use the DirectMusic DLS2 synthesizer 
34    for sound effects programming.
35         Submixing of audio prior to 3D processing (by DLS2 synthesizer)
36         Automatic streaming and ACM compression (ADPCM, etc.)
37    Composition enhancements
38    Audio Scripting
40 We also think you will want to look at using the DLS2 synthesizer as your 
41 main sound effects engine.  The DLS2 synthesizer is accessed primarily through 
42 the DirectMusic API's.  Please do not let the word, "Music" mislead you; the 
43 DirectX 8.0 DirectMusic API's have been enhanced *specifically* for sound effects
44 playback.  The new DirectMusic API's that are designed to support sound effects
45 refer to audiopaths. Please investigate audiopaths; they provide a lot of
46 cool features for sound effects.  For example, if you have multiple sounds 
47 that need to come from the same 3d location, you can pre-mix them (using Audiopaths) 
48 and use only one 3d hardware buffer to play them.
50 Parameter Validation:
51 DirectSound in particular has some greater parameter validation in place
52 when the DirectSound8 interfaces are used.
54 -Waveformats are more tightly parsed
55 -You can no longer create a DirectSoundBuffer with both CTRL_3D and CTRL_PAN set
56 -You can no longer create a DirectSoundBuffer with CTRL_3D set and a wave format
57 with more than 1 channel.  I.e. Only mono buffers may be created with CTRL_3D.
59 Scripting is very exciting.  It puts much of the control over the audio 
60 implementation of the game into the hands of the sound designer.  Using 
61 scripts, audio designers can change implementations, make the music 'magically' 
62 interactive, and play different sound effects based on in-game variables.  
63 It also drastically shortens the edit-integrate-listen cycle.  This should
64 result in improved sound effects and music, with much less game-programmer 
65 time required.
67 There are sections in the documentation on a new FullDuplex interface and
68 "Capture effects."  These interfaces are not currently supported.
70 If you are using DirectPlayVoice, you should use those interfaces.  If your
71 application requires audio capture outside of DirectPlayVoice, 
72 you should use the existing DirectSoundCapture interfaces.
75 Direct3D
76 ========
78 Migration of DirectDraw into Direct3D:
80 In DirectX 8.0, DirectDraw® is fully integrated into Microsoft Direct3D
81 to enable drastically simplified application initialization, improved data 
82 allocation and management performance, and reduced memory footprint. 
83 The new Direct3D infrastructure provides the services that are called 
84 at relatively low frequency.  These services comprise:
86 - Creation of Direct3D
87 - Creation of resources (textures, vertex buffers etc)
88 - Display mode selection
89 - Presentation of rendered images to the display
91 New Graphics Features for DirectX 8.0 are:
93 Parallel vertex input streams for more flexible mapping to dynamic 
94 application data structures. Programmable vertex processing language 
95 enables programmers to write hardware shaders for:
97 - Morphing/tweening animation
98 - Matrix palette skinning
99 - User-defined lighting models
100 - General environment mapping
101 - Procedural geometry
102 - Any other developer-defined algorithm
104 Programmable Pixel processing language enables programmers to write 
105 hardware shaders for:
107 - Per-pixel lighting/bump mapping
108 - Per-pixel environment mapping
109 - Any other developer-defined algorithm
111 MultiSample Rendering support enables:
113 - Full-scene antialiasing
114 - Multisample effects such as motion blur, depth-of-field, etc.
116 Point Sprites enable:
118 - High-performance rendering of particle systems
120 3-D Volume textures enable:
122 - Range-attenuation in per-pixel lighting
123 - Volume atmospheric effects
124 - Easy texturing of very complex geometry
126 Higher-Order Primitive Support:
128 - For enhancing the appearance of 3-D content
129 - Facilitating mapping of content from major 3-D authoring tools
131 Higher-Level Technologies:
133 - 3-D content creation tool plugins for export into Direct3D of skinned 
134   meshes using a variety of Direct3D techniques such as, multi-resolution 
135   LOD geometry, and higher order surface data.
137 Direct3D Feature Notes:
139 No significant API changes are contemplated beyond this point.  
140 All implemented features have been tested individually 
141 to some extent, but they have not been tested in exhaustive combinations 
142 yet.  Many features in DirectX 8.0 are awaiting new hardware, however 
143 there is at least one implementation available for each of the features 
144 shipped:
146 - Programmable vertex shaders are supported on the host CPU. On CPUs they 
147   will operate with performance comparable to HW implementations and can be 
148   used immediately for DirectX 8.0 prototyping and development. 
149 - Programmable pixel shaders are supported on the host CPU using refrast 
150   only. These can be used for prototyping DirectX 8.0 shaders for use when 
151   hardware ships. 
152 - Parallel DMA data input is supported on refrast and the SW geometry pipeline.
153 - Point Sprites are supported in refrast, software T&L pipeline, and should
154   be supported in a prototype DirectX 8.0 driver from at least one hardware 
155   manufacturer.
156 - Volume Textures are supported in refrast. 
157 - Multisample rendering is supported in refrast and future hardware. 
158 - Higher-Order Primitives are supported in refrast and via D3DX utilities.  
160 D3DX
161 ====
163 Debug Binaries for D3DX:
165 The D3DX library is a static library. However, to help debugging, we also 
166 have a debug only dynamic library of D3DX in DirectX 8.0. To use this, link 
167 with the d3dx8d.lib which is an import lib corresponding to the D3DX8D.DLL. 
168 If you are reporting a bug and sending Microsoft an example that reproduces 
169 that behavior, please make sure the executable is linked to the dynamic debug 
170 library.
172 The dynamic debug d3dx8 library is for debugging only and is not intended 
173 for use of shipping applications. D3DX8D.DLL is installed as part of the 
174 DirectX 8.0 SDK setup, not as part of the redistributable runtime setup. 
175 This will not be available as part of future operating systems.
177 If apps want to statically link to the debug d3dx8 library they need to 
178 link to d3dx8dt.lib. To statically link to a retail d3dx8 library please 
179 link to d3dx8.lib.
181 The D3DX Effect Framework
183 The D3DX effect framework allows you to define shading effects using a text 
184 file that describes the various techniques of implementing an effect. For 
185 an example of an effect file see water.sha in the C samples media directory.
188 DirectInput
189 ===========
191 DirectInput for DirectX 8.0 features a major addition, the DirectInput 
192 Mapper. The Mapper makes it possible for applications to code to their 
193 in-game actions, without the effort of figuring out the actions represented 
194 on the device itself. Additionally, the Mapper makes user configuration 
195 of devices much simpler by offering a default configuration UI. 
197 DIPROP_KEYNAME is supported by the IDirectInputDevice8::GetProperty 
198 method. DIPROP_KEYNAME retrieves the localized key name, in the form 
199 of a DIPROPSTRING, from a DirectInput DIK_* value.
201 DIPROP_SCANCODE is supported by the IDirectInputDevice8::GetProperty 
202 method. DIPROP_KEYNAME retrieves the device scancode, in the form of a 
203 DIPROPDWORD, from a DirectInput DIK_* value.  
206 DirectPlay
207 ==========
209 DirectPlay has been completely rewritten in DirectX 8.0 to provide the 
210 robust scalability required to build high performance, massively 
211 scaleable network games. With version 8.0, DirectPlay also provides 
212 voice communication via the DirectPlay Voice API.
214 Note: In these release notes the phrases "DirectPlay4", "DirectPlay4 
215 interface" or "DirectPlay4 session" are used to mean the IDirectPlay4 
216 interface or a session hosted using the IDirectPlay4 interface, even 
217 if that interface or session is implemented using the dlls that are 
218 part of DirectX 8.0. "DirectPlay8", "DirectPlay8 interface", and 
219 "DirectPlay8 session" mean the IDirectPlay8... family of interfaces,
220 or a session hosted using the IDirectPlay8... family of interfaces.
222 Since DirectPlay8 has been completely re-written from the ground up, 
223 the DirectPlay8 interfaces are not extensions of the existing 
224 DirectPlay4 interfaces. i.e. the DirectPlay8 interfaces do not 
225 inherit from the DirectPlay4 interfaces in the object oriented sense.
227 Also, DirectPlay8 sessions are not network compatible with DirectPlay4
228 sessions.
230 Note that the DirectPlay4 interfaces are still present in DirectPlay8
231 and are still compatible with previous versions of DirectPlay. So games
232 written for DirectPlay4 will still run on systems with DirectX 8.0 
233 installed.
235 To enable maximum scalability, DirectPlay8 uses a callback model. All
236 indications from DirectPlay8 are delivered to the application via an
237 application supplied callback function. Therefore DirectPlay can indicate 
238 multiple events to the application in parallel on different threads.
240 Additionally, performance critical operations such as Send and Receive 
241 can be performed without copying data, and without thread switching. 
243 This programming model allows DirectPlay applications to achieve maximum 
244 possible performance and scalability on both single-processor and 
245 multi-processor hardware.  
247 DirectPlay8 also adds:
248   - Better support for NATs, Firewalls, and Proxy Servers
249   - Application defined payloads on session enumerations and replies
250   - Revised addressing scheme that is URL ruled based designed to be human 
251     readable and portable
252   - The use of I/O completion ports in Windows 2000
253   - Improved ease of use through the removal of obtuse services, for example 
254     groups within groups
256 The DirectPlay Voice interfaces allow you to quickly and easily establish 
257 voice communications over an existing DirectPlay8 or DirectPlay4 session. 
259 DirectPlay Voice provides the following features:
260   - Peer to peer, forwarding server, and mixing server voice topologies
261   - A variety of codecs from 1.2kbit/sec to 64kbit/sec, that can be used 
262     royalty free in DirectPlay Voice.
263   - Voice detection to automatically trigger voice transmission
264   - Automatic gain control to automatically adjust the recording volume level
265   - Adaptive queuing that provides a smooth speech stream with minimum latency
266     over different and changing network conditions
267   - Integration with DirectSound & DirectSoundCapture
268   - Sound Hardware Test wizard
269   - Support for IDirectPlay8 and IDirectPlay4 transport sessions
271 DirectPlay8 still has all the benefits of previous versions of DirectPlay, 
272 including:
273   - session setup and teardown
274   - session discovery
275   - application launching
276   - player management
277   - group management
278   - client/server and peer to peer operation
279   - peer to peer host migration
280   - bandwidth throttling protocol
283 DirectShow
284 ==========
286 DirectX 8.0 marks the first release that DirectShow has been part of the
287 core DirectX redistribution. This means that for the first time,
288 applications using DirectShow need not install a separate redist, and 
289 current DirectX users can now take advantage of DirectShow in their
290 applications. Adding to the existing capabilities for audio and video
291 playback and capture that DirectShow provided, this new release also
292 provides the following new features:
294 Windows Media Format Support:  Two new filters enable DirectShow applications
295 to read and write files in Windows Media Format. The ASF Reader filter 
296 reads and parses Windows Media Format files. The ASF File Writer filter 
297 writes Windows Media Format files; it also does the necessary multiplexing 
298 and compressing. 
300 DirectShow Editing Services (DES):  This is a complete API for timeline and
301 switching services built on top of DirectShow. This API implements the
302 core of non-linear editing services, and allows for the creation of
303 composite media from a variable number of source audio and video streams. 
304 By allowing real-time effects and transitions, true "on-the-fly" source 
305 switching, run-time compositing, run-time seeking, and graph management,
306 DES provides a powerful high-level way to use DirectShow, while
307 still allowing applications to access lower-level DirectShow functions.
308 DES replaces cutlists, which are no longer supported.
310 New DVD Support:  Two new interfaces, IDVDControl2 and IDVDInfo2, greatly expand
311 the functionality of the DVD Navigator. The new MSWebDVD ActiveX® control 
312 makes this functionality available to script-based applications. 
313 New DVD features include: Karaoke multichannel audio support, audio volume 
314 control through IBasicAudio, support for frame stepping and frame-accurate 
315 seeking, simplified access to DVD text information strings, and improved support 
316 for parental management controls. 
318 DirectX Media Objects:  DirectX Media Objects (DMOs) are a new way to write 
319 data-streaming components. Like DirectShow filters, DMOs take input data and use 
320 it to produce output data. However, the application programming interfaces 
321 (APIs) for DMOs are much simpler than the corresponding APIs for DirectShow. As 
322 a result, DMOs are easier to create, test, and use than DirectShow filters.
323 A wrapper filter is provided to allow DMOs to be used within DirectShow. 
325 Media Parameters:   Media parameters are a new set of APIs that support run-time 
326 changes to an object's properties. They offer precise control over properties 
327 that change rapidly and require both high performance and repeatability. They 
328 enable a property to follow an exact curve, such as a sine wave or 
329 inverse-square curve, in real time.
331 New Filters:
332 - MJPEG Decompressor: Decodes a video stream from motion JPEG to uncompressed video 
333 - MJPEG Compressor: Compresses an uncompressed video stream using 
334      motion JPEG compression. 
335 - Null Renderer: Discards samples without displaying or rendering the sample data.
336      Applications can use this filter to discard data from a stream. 
337 - Sample Grabber: Retrieves media samples as they move through the filter graph.
338      Applications can use this filter to obtain poster frames or other media data. 
340 Dynamic Graph Building:  DirectShow applications can now change the graph 
341 while it is still playing. This allows new audio or video streams to be added 
342 to a graph, effects to be inserted in the graph without any visible gap in the
343 playback, and chains of filters to be paused and run independent of the main graph.
345 Push Model Clock Support:  This allows for improved synchronization between
346 audio and video streams. The default audio renderer can now be slaved to
347 another clock, allowing for applications to deal with timing differences
348 between clocks on sound cards and capture devices, among other scenarios.
350 Graph Edit enhancements:  GraphEdit now displays filter registration information
351 in the Insert Filters dialog and allows you to spy on existing graphs in
352 external processes (if those processes register their graphs).
355 DirectMusic Producer
356 ====================
358 This version of Producer features many new features to aid in both 
359 authoring and auditioning of DirectMusic content.  These features include 
360 authoring support for audio path configurations, which manages pchannel 
361 and synth assignments as well as effects routing, the new DLS level 2 
362 format (which includes stereo waves, layering of regions, and filtering) 
363 and a new API for scripting, which allows composers and sound designers 
364 to integrate audio content directly into an application.  Other major 
365 features include new track types, including a wave track, a script 
366 track, a secondary segment trigger track and a melody track, which 
367 integrates a variable approach with greater control of form. 
370 DirectX Control Panel
371 =====================
372 Developers can now toggle between DirectX retail and debug system components 
373 through the DirectX Control Panel. 
376 Broadcast Driver Architecture
377 ======================
379 Broadcast Driver Architecture (BDA) is a set of Ring 0 and Ring 3 software 
380 components based on the DirectShow® architecture for streaming multimedia 
381 broadcast content. BDA is also a specification that defines how custom 
382 components, such as filters for parsing private data, interface with the 
383 rest of the system. Digital-TV applications can use the Ring 3 components 
384 to build filter graphs, implement a single model for tuning across all 
385 network types, automate the storage and retrieval of electronic program 
386 guide information, and capture IP data including ATVEF announcements, 
387 triggers, and packages.
389 __________________________________________________________________
393 DIRECTX 8.0 SDK NOTES AND KNOWN ISSUES
394   
396 DirectX Audio (DirectSound & DirectMusic)
397 =========================================
399 Below are some known issues with DirectMusic and DirectSound in 
400 DirectX 8.0 that you may encounter.  
402 - ParamEQ and Distortion effects have parameters that are sampling rate 
403   dependent.
404   Setting these params to a value that is out of range for that sampling 
405   rate will result in:
406      Distortion:  Parameters are 'clipped' at the valid range for the 
407                   sampling rate
408      ParamEQ:  If the frequency is greater than can be supported by the 
409                sampling rate, the effect is disabled-  In the DirectMusic 
410                3DAudio sample, there may be some breakup if Doppler is set > 4
411 - DirectSound buffers that are created with DSBCAPS_CTRLFX must be at 
412   least 100ms in length.
415 Direct3D
416 ========
418 - All executables compiled against earlier DirectX 8.0 betas must be 
419   recompiled with this version to run.
420 - Alt-enter in the samples results in texture corruption for some drivers. 
421   Workaround: Get newer drivers.
422 - The value for MaxPrimitiveCount defines the max number of vertices
423   as well as the max number of primitives that can be sent to a 
424   DrawIndexedPrimitive or DrawPrimitive call.
425 - A bug in the Windows2000 kernel causes an issue upon mode-switches for 
426   AGP surfaces locked with the NOSYSLOCK flag. The contents of any such 
427   surface may  become inaccessible for the duration of the NOSYSLOCK lock 
428   if a mode-switch happens after the Lock and before the Unlock. This happens 
429   for both DX7 and DX8 applications. The most likely scenario is a DX8 
430   application running on a driver that supports hardware vertex buffers, 
431   but using software vertex processing (fixed or shader). Under these 
432   scenarios, Direct3D might keep a NOSYSLOCK lock on an AGP vertex buffer. 
433   If the user alt-tabs out of the application or does anything else to cause 
434   a mode-change, the thread writing into the vertex buffer may fault. There 
435   is no known workaround. Microsoft will fix this issue in the next version 
436   of Windows and will attempt to ship a fix in a future Windows2000 
437   Service Pack.
438 - A bug in the DX6 and DX7 implementation of 
439   IDirectDraw*::GetDeviceIdentifier causes the DirectDraw runtime to write 
440   four extra bytes past the end of the structure. To work around this issue, 
441   allocate an extra four bytes at the end of your DDDEVICEIDENTIFIER* 
442   structure. This bug does not exist in the IDirect3D8::GetAdapterIdentifier 
443   version.
444 - The Direct3D8 run-time exhibits the following behvior on all Windows NT 
445   platforms. Run a full-screen Direct3D8 application, press Ctrl-Alt-Del, 
446   press ESC. The desktop will appear, but the display card will still be in 
447   the application's resolution, not the proper desktop resolution. (The user 
448   may alt-tab back to the application at this time.) A fix for this will be 
449   in the next release of DirectX, and the problem will be fixed in the next 
450   version of Windows NT. Developers are urged NOT to try to work-around this 
451   problem nor code their own solutions, since such solutions are very likely 
452   to interact poorly with our own fix.
453 - Terminating a process with un-released vertex buffers on Win9x DX7 APIs 
454   can cause instability. This is caused by a bug in the automatic per-process 
455   cleanup code in DirectDraw which causes VBs to be leaked permanently (until 
456   reboot) on all Win9x platforms: Windows 95, 98, Millenirum. Applications 
457   should be carefully coded to ensure all Vertex Buffers are correctly released
458   before exiting the process.
459 - Applications should be careful when responding to the WM_MOUSEMOVE message. 
460   If the application calls IDirect3DDevice8::SetCursorPosition with a coordinate 
461   that is outside the current display mode size, then the Direct3D run-time may 
462   cause another WM_MOUSEMOVE, which may cause the application to call 
463   IDirect3DDevice8::SetCursorPosition again, resulting in an infinite loop. 
464   The application should either be careful not to call 
465   IDirect3DDevice8::SetCursorPosition  with invalid positions, or should never 
466   call IDirect3DDevice8::SetCursorPosition  with repeated positions.
467   One common scenario for generating invalid mouse cursors is to remove the 
468   menu style from a window incorrectly when going full-screen. The SDK sample 
469   applications incorrectly use SetWindowLong to remove the menu bar from the 
470   window before going fullscreen. The correct technique is to call 
471   "hOldMenu = SetMenu(hWnd, NULL)'" before going fullscreen, and then 
472   "SetMenu(hWnd, hOldMenu);" before returning to windowed mode.
473 - When using the function ValidateDevice on Win9x the return value will be 
474   DD_OK if it is successful.
476 Point Sprites:  
478 - When using the Direct3D software T&L pipeline (device created with 
479   D3DCREATE_SOFTWARE_VERTEXPROCESSING flag set or with 
480   D3DCREATE_MIXED_VERTEXPROCESSING flag and software vertex processing 
481   toggled on), then point sprite support is guaranteed.  When using 
482   hardware vertex processing, some older drivers may not support point 
483   sprites, indicated by d3dcaps->MaxPointSize = 0.  Upgrading to a DX8 
484   driver for these parts will enable them.
486     To ensure consistent behavior for point sprite support, set
487         D3DRS_CULLMODE = D3DCULL_NONE 
488         D3DRS_FILLMODE = D3DFILL_SOLID
489     when rendering point sprites.
491 Vertex Shaders:  
493 - Two vertex shader instructions may produce implementation-specific 
494   results for out-of-range inputs, such as the log of a negative number.
495   The log, logp and y- component of the lit instruction macro should not
496   be passed negative values for this reason.
498 Driver/Device Specific Issues:
500 - The Windows Millennium driver for the ATI Rage 128 fails (draws nothing) 
501   when using vertex shaders which output more than two texture coordinates 
502   per texture coordinate set when the D3DTTFF_PROJECTED bit is not set.
504 D3DX
505 ====
507 - This product includes software developed by the University of California,
508   Berkeley and its contributors D3DX Mesh APIs.
509 - The ID3DXSkinMesh interfaces currently only support 16-bit mesh. 32-bit 
510   mesh support is not yet implemented.
511 - All other D3DX Mesh interfaces do support 32-bit meshes even though the 
512   docs say they do not.
513 - D3XGenerateAdjacency currently ignored the epsilon value and uses 0.0f 
514   as the epsilon.
515 - In D3DXMatrixPerspectiveFOV, the aspect ratio is x/y instead of y/x.
518 DirectInput
519 ===========
521  - There is a bug in DirectInput which causes the Logitech Wingman Formula wheel to 
522    report pedal data on the wrong axes.  
523  - There are some know issues that can cause mouse behavior to be very sluggish 
524    when debugging using DirectInput.   There are two reg files that will
525    assist with this issue.  They are:
526       Mouse and Keyboard Emulation On.reg
527       Mouse and Keyboard Emulation Off.reg
528    "Mouse and Keyboard Emulation On.reg" will force all mouse calls through 
529    dinput emulation, thus making the mouse perform properly inside the debugger.  
530    "Mouse and Keyboard Emulation Off.reg" will turn off force emulation.
531    Only use these keys on development machines, they are not intended to be 
532    redisted as they are a global setting that effects all Direct Input clients.
533  - The following devices are supported with device images in this release.    
534       + ACT LABS RS
535       + ACT LABS Force RS
536       + Gravis Xterminator Dual Control 
537       + Gravis Blackhawk Digital        
538       + Gravis Gamepad Pro USB
539       + Gravis Gamepad Pro
540       + Gravis Eliminator Gamepad Pro
541       + Gravis Xterminator Digital GamePad
542       + InterAct/3dfx SV-262A HammerHead Fx
543       + InterAct Axispad
544       + InterAct SV-251 Raider Digital
545       + Logitech WingMan Formula (Yellow)
546       + Logitech WingMan Extreme Digital 3D
547       + Logitech WingMan Gamepad Black (USB)
548       + Logitech Wingman Rally Force USB
549       + Logitech Wingman Rumblepad
550       + Microsoft Sidewinder Gamepad Pro
551       + Microsoft SideWinder Force Feedback Wheel
552       + Microsoft SideWinder Force Feedback Pro
553       + Microsoft Sidewinder FF 2
554       + Microsoft Sidewinder Dual Strike
555       + Microsoft Sidewinder Precision 2
556       + Microsoft Sidewinder Plug and Play
557       + Microsoft SideWinder Game Pad
558       + Microsoft SideWinder Precision Racing Wheel
559       + Microsoft SideWinder Precision Pro
560       + Microsoft SideWinder Freestyle Pro
561       + Microsoft SideWinder 3D Pro
564 DirectPlay
565 ==========
567 The following are known issues with DirectPlay in this release that 
568 you may need to work around.
570 - Note that the dwTimeoutUntilKeepAlive member of the DPN_CAPS structure 
571   specifies a minimum value. The first keepalive packet may be sent as 
572   much as 30 seconds later than the minimum value specified in this 
573   member. For example, if you set dwTimeoutUntilKeepAlive to 60000 
574   (60 seconds) the first keepalive packet may be sent anywhere from 
575   60 to 90 seconds after the last normal packet was sent.
576 - To use DirectPlay Voice in full duplex mode, we recommend that you update
577   to the latest drivers for your audio device. Some older drivers do not
578   provide reliable full duplex performance.
579 - If you connect to a location that you have enumerated, the enumeration 
580   will be canceled automatically for you.  If you attempt to do a cancel 
581   asynchronous operation on this enum after the connect is completed you 
582   will get back DPNERR_USERCANCEL error code.  Be aware that this is the
583   expected behavior and that you should not exit with an error condition.
584 - The modem service provider implementation for DirectPlay8 requires 
585   TAPI 2.0 functionality.  TAPI 2.0 is available as an installed component 
586   on Windows 98 and later, but not on Windows 95.  If your application 
587   requires modem functionality on the Windows 95 platform, the TAPI 2.0 
588   patch for Windows 95 can be obtained on the Microsoft FTP site 
589   (ftp://ftp.microsoft.com/developr/TAPI/tapi2195.zip) and distributed 
590   with you application.
592 Notes on NATs (Network Address Translators):
594 - There are many different NAT solutions available, some of which are
595   different from others. We have attempted to document some of the issues
596   with various NAT solutions, but is not comprehensive.  Please refer to 
597   the DirectX Developer Page at http://msdn.microsoft.com/directx for 
598   further information on these issues.
600 DirectPlay Voice codecs via Windows ACM (Audio Compression Manager):
602 - DirectPlay Voice uses the following codecs via the Windows ACM:
603    - Microsoft ADPCM
604    - Microsoft GSM
605    - DSP Group Truespeech
606 - Installation of these codecs with Windows is optional. If they 
607   are not installed, then one or more of the compression types in 
608   DirectPlay Voice will not function. If the application attempts 
609   to use a compression type that is not functional due to a missing 
610   ACM codec, it will receive the DVERR_COMPRESSIONNOTSUPPORTED 
611   return code.
612 - On Windows 2000, the user can install these codecs through the 
613   Add/Remove Hardware wizard. The user should select 
614   "Add/Troubleshoot a device". When a list of hardware is presented, 
615   the user should select "Add a new device", then on the next 
616   page select "No, I want to select the hardware from a list". 
617   This will bring up a list of hardware. Select "Sound, video, and 
618   game controllers". The "Audio Codecs" item is listed under 
619   "(Standard system devices)". 
620 - On Windows 9x, the user can install these codecs through the 
621   Add New Hardware wizard. When prompted, the user should select 
622   "No, I want to select the hardware from a list". In the list of 
623   device types, codecs are listed under "Sound video and game 
624   controllers". The codecs are listed under two manufacturers. 
625   The ADPCM and GSM codecs are listed under "Microsoft Audio 
626   Codecs" and the Truespeech codec is listed under "DSP Group".
629 DirectShow
630 ==========
632 - The GraphEdit Tool (and some of the DirectShow samples) requires MFC42.DLL
633   to be present on the system.  The DirectX SDK Setup does not install this 
634   DLL.  This will only be an issue on Windows 95 systems and will require you
635   to install Microsoft Visual C++ to acquire the DLL.
636 - Application development using the DirectShow base classes libraries requires
637   installation of the DirectShow samples.  The source code for the base classes
638   is now included as a sample project, rather than as a separate Classes\Base 
639   directory.  You must compile these base classes to generate strmbase.lib and 
640   strmbasd.lib, which are no longer installed as binary files.   If you are
641   linking with strmbase.lib or strmbasd.lib with your own application, be sure
642   to build and link with the updated DirectX 8 libraries (instead of the older
643   libraries that are installed with Visual C++ or the Microsoft Platform SDK).
644 - The samples included with the SDK are configured to compile and link with 
645   the updated libraries, which are generated by building the BaseClasses project.  
646   Further build instructions are provided in:
647           <DXSDKInstallFolder>\samples\Multimedia\DirectShow\readme.txt.
648 - The <streams.h> header file, along with many other DirectShow-specific header
649   files, is now located in the DirectShow samples BaseClasses directory, 
650   which includes the BaseClasses source code and header files.  You must add 
651   the BaseClasses directory to the beginning of your project's include path 
652   settings in order for Visual C++ to find all of the updated header files.
653 - To use the Teletext Decoder Fonts that are shipped with DX8, make sure that
654   the WST_* fonts are installed by examining the \windows\fonts directory.
655 - There is a known problem with the MP3 decoder filter when used with
656   Audio Effects DMOs.  If you add an audio effect DMO (like WavesReverb, Echo,
657   or Flange) to an existing MP3 filter graph, the audio could be played back
658   at double speed.  The problem would occur whenever the MP3 decoder is connected 
659   to a downstream audio effect dmo (via the dmo filter wrapper) that offers a 
660   default audio input type which doesn't match the native format of the 
661   uncompressed MP3 stream.  For example, if you render a 22kHz MP3 file and 
662   add a DMO Audio effect, the MP3 filter could misinterpret the input type as
663   being 44kHz when it is actually 22kHz.  This would not be a problem for 44kHz 
664   MP3 files.  This issue will be fixed in a future release.
665 - If you have the SDK on CD-ROM, the Extras\DirectShow\Media  directory 
666   contains additional media that can be used with DirectShow and the DirectShow
667   Editing Services (DES) interfaces.  We have included DV-encoded AVI videos, 
668   larger MPEG videos, and higher-quality JPEG images.  Since the DV files are 
669   very large, you should copy them to your hard disk before playing them to 
670   ensure the best performance.
671 - Remote graph spying with GraphEdit works only on Windows 2000.
672 - The DirectShow Editing Services (DES) Color Generator source filter may 
673   generate blue or green components incorrectly if they have small values.  
674   For best results, use solid primary colors or set Blue and Green 
675   components to values of either 0xFF or 0x00.
678 Broadcast Driver Architecture
679 ======================
681 Known issues with Broadcast IP Data Reception under Windows 2000:
683 - After rebooting a Windows 2000 system with a BDA receiver card installed,
684   the BDA NDIS IP NIC is not immediately active.  It becomes active only 
685   when an application inserts the BDA IPSink filter into a graph and connects
686   its input pin.  Once activated by connecting the IPSink filter's input pin,
687   it takes 20 to 30 seconds for the BDA NDIS IP NIC to be assigned an IP 
688   address.  The address assigned will be a Net 10 address.  Once activated, 
689   the BDA NDIS IP NIC will remain active until the system is rebooted.
690 - There may be some applications that use the BDA NDIS IP NIC as the default 
691   LAN adapter.  These apps will fail if the BDA NDIS IP NIC is active.  To 
692   de-activate the BDA NDIS IP NIC, reboot the system and do not run a TV graph 
693   or application.
696 Documentation
697 =============
699 This section contains corrections to the following components of the DirectX SDK documentation:
701   DirectX Graphics (Visual Basic)
702   DirectPlay
703   DirectShow
705 ===============================
706 DirectX Graphics (Visual Basic)
707 ===============================
709 ---------------------------
710 D3DDevice8.SetRenderTarget
711 ---------------------------
713 The D3DDevice8.SetRenderTarget method takes a third argument that is reserved for future use. It must be set 0. 
716 ==================
717 DirectPlay (C/C++)
718 ==================
721 --------------------------------
722 IDirectPlay8Peer::GetPeerAddress
723 --------------------------------
724 You cannot call GetPeerAddress() on yourself.
727 ----------------------------------
728 IDirectPlay8LobbyClient::Initialize
729 ----------------------------------
730 Initialize should include error codes NOTALLOWED and ALREADYINITIALIZED.  
733 DPNERR_NOTALLOWED is returned when a user attempptsd to initialize more than one instance of the DirectPlay8LobbyClient per process.
735 DPNERR_ALREADYINITIALIZED is returned when a user tries to call this method more than once.
737 ----------------------------------
738 IDirectPlay8LobbiedApplication::Initialize
739 ----------------------------------
740 This method should include error codes NOTALLOWED and ALREADYINITIALIZED.  
741 DPNERR_NOTALLOWED is returned when a user attempptsd to initialize more than one instance of the DirectPlay8LobbiedApplication per process.
743 DPNERR_ALREADYINITIALIZED is returned when a user tries to call this method more than once.
746 ------------------------------------------
747 IDirectPlay8LobbyClient::EnumLocalPrograms
748 ------------------------------------------
750 This method returns DPNERR_DOESNOTEXIST when the GUID that is specified for the application is not registered. 
753 -----------------------------
754 IDirectPlay8Server::SetSPCaps
755 -----------------------------
757 This method should have a third parameter: dwFlags. It is reserved for future use and should be set to zero.
760 -----------------------------
761 IDirectPlay8Peer::SetSPCaps
762 -----------------------------
763 This method should have a third parameter: dwFlags. It is reserved for future use and should be set to zero.
765 -----------------------------
766 IDirectPlay8Client::SetSPCaps
767 -----------------------------
768 This method should have a third parameter: dwFlags. It is reserved for future use and should be set to zero.
770 =========================
771 DirectPlay (Visual Basic)
772 =========================
775 --------------------------------
776 DirectPlay8Peer.GetPeerAddress
777 --------------------------------
778 You cannot call GetPeerAddress() on yourself.
780 -----------------------------------
781 DirectPlay8Peer.GetLocalHostAddress
782 -----------------------------------
783 This method is missing from the documentation. The syntax is:
785     GetLocalHostAddress([lFlags As Long]) As DirectPlay8Address
787 The lFlags parameter is reserved and should be set to zero.
789 The method returns a DirectPlay8Address object that contains the local host address.
792 ==========
793 DirectShow
794 ==========
797 -------
798 General
799 -------
801 Although DirectShow does provide some APIs for Visual Basic and script developers, these are not extensive enough to warrant a separate Visual Basic compiled help file for DirectShow. Therefore all the DirectShow APIs, both for Visual Basic and C++, can be found under the DirectX C++ node. Note: The DirectShow documentation for Whistler Beta 2 is at an incorrect level in the Table of Contents.  Look for it in the next release in its correct position one level under the DirectX C++ node.
803 ----------------------
804 Broadcast Architecture
805 ----------------------
806 The old Broadcast Architecture documentation is now included in the DirectShow documentation under the title "Microsoft TV Technologies." 
808 -----------
809 Guide Store
810 -----------
811 Under Microsoft TV Technologies, the Guide Store APIs were revised significantly after the documentation was "locked down" for beta 2. The new APIs  will be documented in the next release. 
813 --------------------------------------
814 Video Mixing Renderer late corrections
815 --------------------------------------
817 IVMRSurfaceAllocate::AllocateSurface() can also return E_FAIL if passed an invalid lpAllocInfo->lpHdr. 
819 Before calling AllocateSurface explicitly from the client application, one should call IVMRSurfaceAllocator::FreeSurface()  to be sure that CAMDDrawMonitorInfo::pDDSDecode ( DDraw Decoding Surface Front Buffer) is NULL.  Otherwise, the debug version of quartz.dll gives an assertion. 
824 Samples 
825 =======
827 Miscellaneous Issues:
829 - Some samples will compile with errors with the UNICODE flag defined.
831 Direct3D Samples:
833 - There are miscellaneous issues with some display hardware & drivers.
834   Please let us know of any problems you encounter and specify whether you
835   believe it is sample or driver related.
837 DirectShow Samples:
839 - There are several .XTL sample files in the \media folder.  These files 
840   demonstrate some of the functionality available in the DirectShow Editing 
841   Services.  You can render these files using the XTLTest C++ sample and 
842   the XTLTestVB and DexterVB VisualBasic samples.  All provided XTL files 
843   refer to media that ships in the SDK's media directory.  Rendering XTL 
844   files is a great way to get an idea of what the new DirectShow Editing 
845   Services APIs make possible.  For a simple demo, drag a few of the SDK 
846   media directory's sample .XTL files onto the XTLTestVB sample's client area.
847 - The DirectShow Visual Basic samples demonstrate more of the DES functionality 
848   than the C++ samples.  Be sure to run SlideShowVB and TrimmerVB if you are 
849   interested in DES.  You can also use the DexterVB ("Dexter Explorer") 
850   application as an XTL development/test tool.
851 - The Texture3D sample is known to fail on some systems (referencing
852   invalid memory), for which you may see an error message.  This failure is
853   in initialization of D3D.  We recommend updating your video card drivers
854   to the most current revision, as that usually resolves the problem.
855 - The DirectShow IDL files are currently located in the
856   \include directory of the SDK for your convenience. 
857 - You will be required to build the \BaseClasses libraries before any sample
858   that depends on them can be built or executed.  Please review the Readme.Txt 
859   file in the DirectShow samples root directory for more information on 
860   building the samples.
863 DirectX for Visual Basic Samples:
865 - DBMON.exe is a console application which allows the Visual Basic DirectX 
866   developer to take advantage of extended output that debug installs of 
867   DirectX provide. This application works only under Windows 2000. 
868   To use, execute the application. All debug output will be captured and sent 
869   to the console window. If you are not seeing debug output, ensure that 
870   you have installed the debug version of DirectX, and that you are running 
871   Windows 2000.
872 - DXVB Messenger Server is the server portion of a client/server instant 
873   messaging application.  This sample requires the use of ActiveX Data Object
874   (ADO) to maintain the data needed.  If you are running Windows 9x, you must 
875   have the latest version of ADO installed on your machine to compile or run 
876   this sample.  You can install the latest ADO while Visual Basic Professional 
877   is being installed or you can download the latest ADO from the web at:
878   http://www.microsoft.com/data/ado/.  ADO is installed by default with 
879   Visual Basic 6 Enterprise.
880 - If you are experiencing problems searching for and connecting to sessions 
881   using DirectPlay for VisualBasic, you may need to update your system.  
882   To update, install DCOM98 from:
883       http://download.microsoft.com/msdownload/dcom/98/x86/en/dcom98.exe 
886 Other
887 =====
889 - The DirectDraw "Debug Level" slider in DirectX Control Panel Applet does 
890   not function.   Instead use the "Debug Output Level" slider on the Direct3D 
891   tab, this will effect both DDraw and D3D8.   Also note that DirectDraw labels
892   it's debug spew as coming from "Direct3D8".
893 - The DirectX runtime will not operate on NEC PC98 systems.  SDK and Runtime 
894   installations have been intentionally blocked on this system.
895 - The DirectX 8.0 runtime requires a Pentium compatible CPU for operation.  
896   The DirectX runtime setup will not install on processors that do not report 
897   Pentium compatibility.  Some older Cyrix processors, while compatible with 
898   the Pentium instruction set, report as x486 processors, and thus do not 
899   support installation of the DirectX 8.0 run time.
900 - Windows 95 Japanese Systems will require MS UI Gothic patch for Windows 95 
901   or Internet Explorer 5.0 (or after) for the DirectX Control Panel to display 
902   properly. MS UI Gothic Patch can be found at 
903   http://www.microsoft.com/JAPAN/win95/msgotupd/default.htm and IE5 (or after)
904   can be found at http://www.microsoft.com/windows/ie/default.htm.
906 __________________________________________________________________
909 COMPILER SUPPORT
911 All DirectX 8.0 SDK samples are developed and compiled with Visual Studio 6.0.  
912 We have provided Visual Studio 6.0 DSP files for your convenience.  
914 All DirectX 8.0 libraries, with the exception of the DirectShow libraries, should
915 be compatible with Visual Studio 5.0 SP3 or higher.  
917 __________________________________________________________________
920 SPECIAL THANKS
922 Marlin Studios
924 Textures used in the Billboard sample, tree02S.tga, tree01S.tga & tree35S.tga,
925 are provided courtesy of Marlin Studios (http://www.marlinstudios.com).  
926 They are provided for use with this sample only and cannot be distributed 
927 with any application without prior written consent.  
929 Viewpoint Digital, Inc.
931 The model used by the Visual Basic AutoParts sample, engine1.x, is provided 
932 courtesy of Viewpoint Digital, Inc. (http://www.viewpoint.com).  It is provided 
933 for use with this sample only and cannot be distributed with any application 
934 without prior written consent.  V6 Engine Model copyright 1999 Viewpoint 
935 Digital, Inc..
937 3DCAFE and Platinum Pictures
939 The model in the Dolphin samples, Dolphin.x, is derived from the model files 
940 (dolphins.zip) provided courtesy of 3DCAFE and Platinum Pictures  
941 (http://www.3dcafe.com/).  It is provided for use with this sample only.  
942 For further terms of use please visit the 3DCAFE site or contact 3DCAFE.